//
//  HMEmoticonPackageModel.swift
//  04-表情键盘
//
//  Created by Admin on 16/9/17.
//  Copyright © 2016年 itcast. All rights reserved.
//

import UIKit

class HMEmoticonPackageModel: NSObject {
    // MARK: - 属性
    /// 表情包 文件夹 名称
    var id: String
    
    /// 表情包 名称
    var group_name_cn: String
    
    // 表情模型 数组
    var emoticons: [HMEmoticonModel]
    
    /// 表情包有所有页数据,每页20个表情
    var pageEmoticons: [[HMEmoticonModel]] = [[HMEmoticonModel]]()
    
    init(id: String, groupName: String, emoticons: [HMEmoticonModel]) {
        self.id = id
        self.group_name_cn = groupName
        self.emoticons = emoticons
        super.init()
        
        spliteEmoticns()
    }
    
    /// 将表情模型数组拆封成多页
    private func spliteEmoticns() {
        // 计算总页数: 总个数 + 一页个数 - 1 / 一页个数
        let pageCount = (emoticons.count + HMEmoticonNumberOfPage - 1) / HMEmoticonNumberOfPage
        
        // 判断,如果一页表情都没有
        if pageCount == 0 {
            // 创建一页空的表情.
            let emptyEmoticon = [HMEmoticonModel]()
            pageEmoticons.append(emptyEmoticon)
            return
        }
        
        // 遍历,拆分每一页
        for i in 0..<pageCount {
            let location = i * HMEmoticonNumberOfPage
            
            // 判断最后一页截取的长度是否越界
            var length = HMEmoticonNumberOfPage
            
            // 当最后也得起始值+每页的数量 > 表情总数,说明会越界
            if location + HMEmoticonNumberOfPage > emoticons.count {
                length = emoticons.count - location
            }
            
            let range = NSRange(location: location, length: length)
            
            // 一页表情
            let spliteEmoticons = (emoticons as NSArray).subarray(with: range) as! [HMEmoticonModel]
            pageEmoticons.append(spliteEmoticons)
        }
    }
    
    /// 对象打印方法
    override var description: String {
        return "\n表情包模型: id:\(id), group_name_cn:\(group_name_cn), emoticons:\(emoticons)"
    }
}
